package com.doudizu.shoesonline.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.doudizu.shoesonline.common.BaseResponse;
import com.doudizu.shoesonline.common.ErrorCode;
import com.doudizu.shoesonline.common.ResultUtils;
import com.doudizu.shoesonline.model.dto.color.ColorQuery;
import com.doudizu.shoesonline.model.entity.Color;
import com.doudizu.shoesonline.service.ColorService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
 * @author ln
 */
@Slf4j
@RestController
@RequestMapping("/color")
@Api(tags = "颜色模块")
public class ColorController {

    @Resource
    private ColorService colorService;

    /**
     *  查看所有的颜色
     * @return 颜色集合
     */
    @GetMapping("/list")
    @ApiOperation("查看所有颜色")
    public BaseResponse<List<Color>> list() {
        List<Color> list = colorService.list();
        return ResultUtils.success(list);
    }

    /**
     * 分页查询
     * @return 分页信息
     */
    @GetMapping("/page")
    @ApiOperation("颜色分页查询")
    public BaseResponse page(ColorQuery colorQuery) {
        return ResultUtils.success(colorService.getColors(colorQuery));
    }

    /**
     *  搜索颜色
     * @param colorName 颜色名字
     * @return 查询到的颜色
     */
    @GetMapping("/select")
    @ApiOperation("搜索颜色")//模糊搜索
    public BaseResponse<List<Color>> select(String colorName) {
        //构造条件构造器
        LambdaQueryWrapper<Color> lambdaQueryWrapper = new LambdaQueryWrapper();
        lambdaQueryWrapper.like(Color::getColorName, colorName);
        List<Color> color = colorService.list(lambdaQueryWrapper);
        return ResultUtils.success(color);
    }

    /**
     *  添加颜色
     * @param colorName 颜色实体
     * @return 是否成功的信息
     */
    @PostMapping("/add")
    @ApiOperation("增加颜色")
    public BaseResponse<String> save(@RequestBody Color colorName) {
        colorService.save(colorName);
        return ResultUtils.success("增加颜色成功");
    }

    /**
     *  单个或者批量的修改颜色信息
     * @return 返回是否成功的信息
     */
    @PostMapping("/update")
    @ApiOperation("修改")
    public BaseResponse<String> update(@RequestBody Color color) {
        colorService.updateById(color);
        return ResultUtils.success(null);
    }

    /**
     *  根据id在进行修改颜色信息的时候进行颜色信息的数据回显
     * @param id id
     * @return 所查询到的颜色信息
     */
    @GetMapping("/getcolor")
    @ApiOperation("颜色回显")
    public BaseResponse<Color> getById(String id){
        if (StringUtils.isBlank(id)) {
            return ResultUtils.error(ErrorCode.PARAMS_ERROR);
        }
        colorService.getById(id);
        return ResultUtils.success(colorService.getById(id));
    }

    /**
     *  单个或者批量删除颜色信息
     * @param ids 颜色id的集合
     * @return 是否成功的信息
     */
    @PostMapping("/delete")
    @ApiOperation("单个或者批量删除颜色信息")
    public BaseResponse delete(@RequestParam List<Integer> ids) {
        colorService.removeBatchByIds(ids);
        return ResultUtils.success(null);
    }
}
